home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 40
/
Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso
/
Aminet
/
dev
/
mui
/
MCC_Lamp.lha
/
MCC_Lamp
/
Developer
/
C
/
Examples
/
Lamp-Demo.c
next >
Wrap
C/C++ Source or Header
|
1997-03-15
|
26KB
|
726 lines
#include <exec/types.h>
#if defined __MAXON__ || defined __STORM__
#include <pragma/exec_lib.h>
#else
#include <proto/exec.h>
#endif
#include <exec/libraries.h>
#if defined __MAXON__ || defined __STORM__
#include <pragma/muimaster_lib.h>
#else
#include <proto/muimaster.h>
#endif
#include <libraries/mui.h>
#if defined __MAXON__ || defined __STORM__
#include <pragma/intuition_lib.h>
#else
#include <proto/intuition.h>
#endif
#include <intuition/classusr.h>
#include <dos/dos.h>
#include <clib/alib_protos.h>
#include <string.h>
#include <stdlib.h>
#if defined __MAXON__ || defined __STORM__
#include <wbstartup.h>
#endif
#include <mui/Lamp_mcc.h>
/* copied from <blizzy/macros.h> */
#ifndef REG
#ifdef _DCC
#define REG(x) __ ## x
#else
#define REG(x) register __ ## x
#endif
#endif
#ifndef ASM
#if defined __MAXON__ || defined __STORM__ || defined _DCC
#define ASM
#else
#define ASM __asm
#endif
#endif
#ifndef SAVEDS
#ifdef __MAXON__
#define SAVEDS
#endif
#if defined __STORM__ || defined __SASC
#define SAVEDS __saveds
#endif
#if defined _GCC || defined _DCC
#define SAVEDS __geta4
#endif
#endif
#define DropableLampObject NewObject(clDropableLamp->mcc_Class, NULL
struct DropableLampData
{
ULONG dummy;
};
#define BlinkingLampObject NewObject(clBlinkingLamp->mcc_Class, NULL
#define MUIM_BlinkingLamp_Blink 0x85b9ffff
struct BlinkingLampData
{
struct MUI_InputHandlerNode ihn;
BOOL black;
};
#define TrafficLightObject NewObject(clTrafficLight->mcc_Class, NULL
#define MUIM_TrafficLight_Change 0x85b9fffe
struct TrafficLightData
{
Object *lpLampRed;
Object *lpLampYellow;
Object *lpLampGreen;
struct MUI_InputHandlerNode ihn;
UBYTE state;
};
#define GUI_LAMP_COLORTYPE 1
Object *apMain = NULL;
Object * wiMain;
Object * lpLamp;
Object * caColor;
Object * btTiny;
Object * btSmall;
Object * btMedium;
Object * btBig;
Object * btHuge;
Object * btColorOff;
Object * btColorOk;
Object * btColorWarning;
Object * btColorError;
Object * btColorFatalError;
Object * btColorProcessing;
Object * btColorLookingUp;
Object * btColorConnecting;
Object * btColorSendingData;
Object * btColorReceivingData;
Object * btColorLoadingData;
Object * btColorSavingData;
Object * pdShine;
Object * pdHalfShine;
Object * pdBackground;
Object * pdHalfShadow;
Object * pdShadow;
Object * pdText;
Object * pdFill;
Object * pdMark;
Object * txColorType;
struct MUI_CustomClass *clDropableLamp = NULL;
struct MUI_CustomClass *clBlinkingLamp = NULL;
struct MUI_CustomClass *clTrafficLight = NULL;
struct Library *MUIMasterBase = NULL;
ULONG DoSuperNew(struct IClass *cl, Object *obj, ULONG tag1, ...)
{
return(DoSuperMethod(cl, obj, OM_NEW, &tag1, NULL));
}
ULONG DropableLamp_DragDrop(Object *obj, struct MUIP_DragDrop *msg)
{
struct MUI_PenSpec *penspec;
get(msg->obj, MUIA_Pendisplay_Spec, &penspec);
set(obj, MUIA_Lamp_PenSpec, penspec);
return(0);
}
ULONG ASM SAVEDS DropableLamp_Dispatcher(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg)
{
switch (msg->MethodID)
{
case MUIM_DragQuery: return(MUIV_DragQuery_Accept);
case MUIM_DragDrop: return(DropableLamp_DragDrop(obj, (struct MUIP_DragDrop *) msg));
}
return(DoSuperMethodA(cl, obj, msg));
}
ULONG BlinkingLamp_Setup(struct IClass *cl, Object *obj, Msg msg)
{
if (!DoSuperMethodA(cl, obj, msg))
return(FALSE);
{
struct BlinkingLampData *data = INST_DATA(cl, obj);
memset(data, 0, sizeof(struct BlinkingLampData));
DoMethod(obj, MUIM_Lamp_SetRGB, 0, 0, 0);
data->black = TRUE;
data->ihn.ihn_Object = obj;
data->ihn.ihn_Method = MUIM_BlinkingLamp_Blink;
data->ihn.ihn_Flags = MUIIHNF_TIMER;
{
static UWORD millis = 50;
data->ihn.ihn_Millis = millis;
millis += 32;
}
DoMethod(_app(obj), MUIM_Application_AddInputHandler, &data->ihn);
}
return(TRUE);
}
ULONG BlinkingLamp_Cleanup(struct IClass *cl, Object *obj, Msg msg)
{
struct BlinkingLampData *data = INST_DATA(cl, obj);
DoMethod(_app(obj), MUIM_Application_RemInputHandler, &data->ihn);
return(DoSuperMethodA(cl, obj, msg));
}
ULONG BlinkingLamp_Blink(struct IClass *cl, Object *obj)
{
struct BlinkingLampData *data = INST_DATA(cl, obj);
if (data->black)
{
set(obj, MUIA_Lamp_Color, MUIV_Lamp_Color_FatalError);
data->black = FALSE;
}
else
{
DoMethod(obj, MUIM_Lamp_SetRGB, 0, 0, 0);
data->black = TRUE;
}
return(TRUE);
}
ULONG ASM SAVEDS BlinkingLamp_Dispatcher(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg)
{
switch (msg->MethodID)
{
case MUIM_Setup: return(BlinkingLamp_Setup(cl, obj, msg));
case MUIM_Cleanup: return(BlinkingLamp_Cleanup(cl, obj, msg));
case MUIM_BlinkingLamp_Blink: return(BlinkingLamp_Blink(cl, obj));
}
return(DoSuperMethodA(cl, obj, msg));
}
ULONG TrafficLight_NEW(struct IClass *cl, Object *obj, struct opSet *msg)
{
Object *lpLampRed;
Object *lpLampYellow;
Object *lpLampGreen;
if (obj = (Object *) DoSuperNew(cl, obj,
MUIA_Group_VertSpacing, 1,
Child, lpLampRed = LampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Huge, End,
Child, lpLampYellow = LampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Huge, End,
Child, lpLampGreen = LampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Huge, End,
TAG_MORE, msg->ops_AttrList))
{
struct TrafficLightData *data = INST_DATA(cl, obj);
memset(data, 0, sizeof(struct TrafficLightData));
data->lpLampRed = lpLampRed;
data->lpLampYellow = lpLampYellow;
data->lpLampGreen = lpLampGreen;
return((ULONG) obj);
}
return(0);
}
ULONG TrafficLight_Setup(struct IClass *cl, Object *obj, Msg msg)
{
if (!DoSuperMethodA(cl, obj, msg))
return(FALSE);
{
struct TrafficLightData *data = INST_DATA(cl, obj);
DoMethod(data->lpLampRed, MUIM_Lamp_SetRGB, 0xffffffff, 0, 0);
DoMethod(data->lpLampYellow, MUIM_Lamp_SetRGB, 0, 0, 0);
DoMethod(data->lpLampGreen, MUIM_Lamp_SetRGB, 0, 0, 0);
data->state = 0;
memset(&data->ihn, 0, sizeof(struct MUI_InputHandlerNode));
data->ihn.ihn_Object = obj;
data->ihn.ihn_Method = MUIM_TrafficLight_Change;
data->ihn.ihn_Flags = MUIIHNF_TIMER;
data->ihn.ihn_Millis = 7500;
DoMethod(_app(obj), MUIM_Application_AddInputHandler, &data->ihn);
}
return(TRUE);
}
ULONG TrafficLight_Cleanup(struct IClass *cl, Object *obj, Msg msg)
{
struct TrafficLightData *data = INST_DATA(cl, obj);
DoMethod(_app(obj), MUIM_Application_RemInputHandler, &data->ihn);
return(DoSuperMethodA(cl, obj, msg));
}
ULONG TrafficLight_Change(struct IClass *cl, Object *obj)
{
struct TrafficLightData *data = INST_DATA(cl, obj);
Object *app;
get(obj, MUIA_ApplicationObject, &app);
DoMethod(app, MUIM_Application_RemInputHandler, &data->ihn);
memset(&data->ihn, 0, sizeof(struct MUI_InputHandlerNode));
data->ihn.ihn_Object = obj;
data->ihn.ihn_Method = MUIM_TrafficLight_Change;
data->ihn.ihn_Flags = MUIIHNF_TIMER;
switch (data->state)
{
case 0:
DoMethod(data->lpLampYellow, MUIM_Lamp_SetRGB, 0xffffffff, 0xffffffff, 0);
data->ihn.ihn_Millis = 1500;
data->state = 1;
break;
case 1:
DoMethod(data->lpLampRed, MUIM_Lamp_SetRGB, 0, 0, 0);
DoMethod(data->lpLampYellow, MUIM_Lamp_SetRGB, 0, 0, 0);
DoMethod(data->lpLampGreen, MUIM_Lamp_SetRGB, 0, 0xffffffff, 0);
data->ihn.ihn_Millis = 7500;
data->state = 2;
break;
case 2:
DoMethod(data->lpLampGreen, MUIM_Lamp_SetRGB, 0, 0, 0);
DoMethod(data->lpLampYellow, MUIM_Lamp_SetRGB, 0xffffffff, 0xffffffff, 0);
data->ihn.ihn_Millis = 1500;
data->state = 3;
break;
case 3:
DoMethod(data->lpLampYellow, MUIM_Lamp_SetRGB, 0, 0, 0);
DoMethod(data->lpLampRed, MUIM_Lamp_SetRGB, 0xffffffff, 0, 0);
data->ihn.ihn_Millis = 7500;
data->state = 0;
break;
}
DoMethod(_app(obj), MUIM_Application_AddInputHandler, &data->ihn);
return(TRUE);
}
ULONG ASM SAVEDS TrafficLight_Dispatcher(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg)
{
switch (msg->MethodID)
{
case OM_NEW: return(TrafficLight_NEW(cl, obj, (struct opSet *) msg));
case MUIM_Setup: return(TrafficLight_Setup(cl, obj, msg));
case MUIM_Cleanup: return(TrafficLight_Cleanup(cl, obj, msg));
case MUIM_TrafficLight_Change: return(TrafficLight_Change(cl, obj));
}
return(DoSuperMethodA(cl, obj, msg));
}
Object *lampbutton(ULONG id)
{
char *label;
char key;
switch (id)
{
case MUIV_Lamp_Color_Ok:
label = "Ok";
key = 'k';
break;
case MUIV_Lamp_Color_Warning:
label = "Warning";
key = 'w';
break;
case MUIV_Lamp_Color_Error:
label = "Error";
key = 'e';
break;
case MUIV_Lamp_Color_FatalError:
label = "Fatal error";
key = 'f';
break;
case MUIV_Lamp_Color_Processing:
label = "Processing";
key = 'p';
break;
case MUIV_Lamp_Color_LookingUp:
label = "Looking up";
key = 'i';
break;
case MUIV_Lamp_Color_Connecting:
label = "Connecting";
key = 'c';
break;
case MUIV_Lamp_Color_SendingData:
label = "Sending data";
key = 'n';
break;
case MUIV_Lamp_Color_ReceivingData:
label = "Receiving data";
key = 'r';
break;
case MUIV_Lamp_Color_LoadingData:
label = "Loading data";
key = 'l';
break;
case MUIV_Lamp_Color_SavingData:
label = "Saving data";
key = 's';
break;
default: /* case MUIV_Lamp_Color_Off: */
label = "Off";
key = 'o';
break;
}
return(HGroup,
ButtonFrame,
MUIA_Background, MUII_ButtonBack,
MUIA_Font, MUIV_Font_Button,
MUIA_HorizWeight, 0,
MUIA_ControlChar, key,
MUIA_InputMode, MUIV_InputMode_RelVerify,
MUIA_CycleChain, TRUE,
MUIA_Group_VertSpacing, 0,
Child, LampObject,
MUIA_Lamp_Type, MUIV_Lamp_Type_Huge,
MUIA_Lamp_Color, id,
End,
Child, MUI_MakeObject(MUIO_VBar, 2),
Child, RectangleObject, End,
Child, TextObject,
MUIA_Text_SetMax, TRUE,
MUIA_Text_Contents, label,
MUIA_Text_HiChar, key,
End,
Child, RectangleObject, End,
End);
}
Object *button(char *label, char key)
{
return(TextObject,
ButtonFrame,
MUIA_Background, MUII_ButtonBack,
MUIA_Font, MUIV_Font_Button,
MUIA_InputMode, MUIV_InputMode_RelVerify,
MUIA_Text_PreParse, "\033c",
MUIA_Text_Contents, label,
MUIA_Text_HiChar, key,
MUIA_ControlChar, key,
MUIA_CycleChain, TRUE,
End);
}
int main(void)
{
int ret = RETURN_FAIL;
static const char *txt_rgMain [] =
{
"Setting attributes",
"Just kidding",
NULL
};
if (!(MUIMasterBase = OpenLibrary(MUIMASTER_NAME, MUIMASTER_VMIN)))
goto bye;
if (!(clDropableLamp = MUI_CreateCustomClass(NULL, MUIC_Lamp, NULL, sizeof(struct DropableLampData), DropableLamp_Dispatcher)))
goto bye;
if (!(clBlinkingLamp = MUI_CreateCustomClass(NULL, MUIC_Lamp, NULL, sizeof(struct BlinkingLampData), BlinkingLamp_Dispatcher)))
goto bye;
if (!(clTrafficLight = MUI_CreateCustomClass(NULL, MUIC_Group, NULL, sizeof(struct TrafficLightData), TrafficLight_Dispatcher)))
goto bye;
if (!(apMain = ApplicationObject,
MUIA_Application_Title, "Lamp-Demo",
MUIA_Application_Version, "$VER: Lamp-Demo 1.1 (16.3.97) © by Maik \"BLiZZeR\" Schreiber",
MUIA_Application_Copyright, "Copyright © 16-Mar-1997 by Maik Schreiber <BLiZZeR@dame.de>",
MUIA_Application_Author, "Maik Schreiber <BLiZZeR@dame.de>",
MUIA_Application_Description, "Demonstrates Lamp.mcc's features",
MUIA_Application_Base, "LAMPDEMO",
SubWindow, wiMain = WindowObject,
MUIA_Window_Title, "Lamp-Demo 1.1",
MUIA_Window_Width, MUIV_Window_Width_Visible(100),
MUIA_Window_Height, MUIV_Window_Height_Visible(100),
WindowContents, VGroup,
Child, RegisterGroup(txt_rgMain),
MUIA_Register_Frame, TRUE,
MUIA_CycleChain, TRUE,
Child, VGroup,
GroupFrame,
MUIA_Background, MUII_PageBack,
Child, HGroup,
Child, VGroup,
GroupFrameT("Lamp"),
Child, RectangleObject, End,
Child, HGroup,
Child, HSpace(25),
Child, lpLamp = DropableLampObject,
MUIA_Lamp_Type, MUIV_Lamp_Type_Huge,
MUIA_Lamp_Red, 0xffffffff,
MUIA_Lamp_Green, 0,
MUIA_Lamp_Blue, 0,
End,
Child, HSpace(25),
End,
Child, RectangleObject, End,
End,
Child, HSpace(8),
Child, VGroup,
Child, HGroup,
GroupFrameT("Color"),
Child, VGroup,
Child, MUI_MakeObject(MUIO_BarTitle, "Custom"),
Child, caColor = ColoradjustObject,
MUIA_Coloradjust_Red, 0xffffffff,
MUIA_Coloradjust_Green, 0,
MUIA_Coloradjust_Blue, 0,
End,
End,
Child, MUI_MakeObject(MUIO_VBar, 6),
Child, VGroup,
Child, MUI_MakeObject(MUIO_BarTitle, "Preferences"),
Child, RectangleObject, End,
Child, ColGroup(2),
MUIA_Group_VertSpacing, 1,
MUIA_Group_SameWidth, TRUE,
Child, btColorOff = lampbutton(MUIV_Lamp_Color_Off),
Child, btColorLookingUp = lampbutton(MUIV_Lamp_Color_LookingUp),
Child, btColorOk = lampbutton(MUIV_Lamp_Color_Ok),
Child, btColorConnecting = lampbutton(MUIV_Lamp_Color_Connecting),
Child, btColorWarning = lampbutton(MUIV_Lamp_Color_Warning),
Child, btColorSendingData = lampbutton(MUIV_Lamp_Color_SendingData),
Child, btColorError = lampbutton(MUIV_Lamp_Color_Error),
Child, btColorReceivingData = lampbutton(MUIV_Lamp_Color_ReceivingData),
Child, btColorFatalError = lampbutton(MUIV_Lamp_Color_FatalError),
Child, btColorLoadingData = lampbutton(MUIV_Lamp_Color_LoadingData),
Child, btColorProcessing = lampbutton(MUIV_Lamp_Color_Processing),
Child, btColorSavingData = lampbutton(MUIV_Lamp_Color_SavingData),
End,
Child, RectangleObject, End,
End,
End,
Child, VSpace(8),
Child, HGroup,
Child, VGroup,
GroupFrameT("Type"),
GroupSpacing(1),
Child, RectangleObject, End,
Child, ColGroup(2),
GroupSpacing(1),
Child, btTiny = button("Tiny", 't'),
Child, btMedium = button("Medium", 'd'),
Child, btSmall = button("Small", 'm'),
Child, btBig = button("Big", 'b'),
End,
Child, btHuge = button("Huge", 'h'),
Child, RectangleObject, End,
End,
Child, HSpace(8),
Child, ColGroup(5),
GroupFrameT("PenSpec (drag'n'drop)"),
Child, FreeLabel("Shine:"),
Child, pdShine = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
Child, HSpace(8),
Child, FreeLabel("Shadow:"),
Child, pdShadow = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
Child, FreeLabel("Half shine:"),
Child, pdHalfShine = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
Child, HSpace(8),
Child, FreeLabel("Text:"),
Child, pdText = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
Child, FreeLabel("Background:"),
Child, pdBackground = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
Child, HSpace(8),
Child, FreeLabel("Fill:"),
Child, pdFill = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
Child, FreeLabel("Half shadow:"),
Child, pdHalfShadow = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
Child, HSpace(8),
Child, FreeLabel("Mark:"),
Child, pdMark = PendisplayObject, TextFrame, MUIA_Background, MUII_TextBack, MUIA_Draggable, TRUE, End,
End,
End,
End,
End,
Child, VSpace(8),
Child, HGroup,
Child, Label("Current lamp color type:"),
Child, txColorType = TextObject,
TextFrame,
MUIA_Background, MUII_TextBack,
MUIA_Text_Contents, "direct color value",
End,
End,
End,
Child, HGroup,
GroupFrame,
MUIA_Background, MUII_PageBack,
Child, RectangleObject, End,
Child, VGroup,
Child, RectangleObject, End,
Child, MUI_MakeObject(MUIO_BarTitle, "Blinking lamps"),
Child, HGroup,
Child, RectangleObject, End,
Child, ColGroup(3),
GroupSpacing(1),
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
Child, BlinkingLampObject, MUIA_Lamp_Type, MUIV_Lamp_Type_Big, End,
End,
Child, RectangleObject, End,
End,
Child, VSpace(8),
Child, MUI_MakeObject(MUIO_BarTitle, "Traffic light"),
Child, HGroup,
Child, RectangleObject, End,
Child, TrafficLightObject, End,
Child, RectangleObject, End,
End,
Child, RectangleObject, End,
End,
Child, RectangleObject, End,
End,
End,
End,
End,
End))
goto bye;
/* Damn *NASTY* MUI bug! */
set(pdShine, MUIA_Dropable, FALSE);
set(pdHalfShine, MUIA_Dropable, FALSE);
set(pdBackground, MUIA_Dropable, FALSE);
set(pdHalfShadow, MUIA_Dropable, FALSE);
set(pdShadow, MUIA_Dropable, FALSE);
set(pdText, MUIA_Dropable, FALSE);
set(pdFill, MUIA_Dropable, FALSE);
set(pdMark, MUIA_Dropable, FALSE);
/* end of annoying bug handling */
DoMethod(pdShine, MUIM_Pendisplay_SetMUIPen, MPEN_SHINE);
DoMethod(pdHalfShine, MUIM_Pendisplay_SetMUIPen, MPEN_HALFSHINE);
DoMethod(pdBackground, MUIM_Pendisplay_SetMUIPen, MPEN_BACKGROUND);
DoMethod(pdHalfShadow, MUIM_Pendisplay_SetMUIPen, MPEN_HALFSHADOW);
DoMethod(pdShadow, MUIM_Pendisplay_SetMUIPen, MPEN_SHADOW);
DoMethod(pdText, MUIM_Pendisplay_SetMUIPen, MPEN_TEXT);
DoMethod(pdFill, MUIM_Pendisplay_SetMUIPen, MPEN_FILL);
DoMethod(pdMark, MUIM_Pendisplay_SetMUIPen, MPEN_MARK);
DoMethod(lpLamp, MUIM_Notify, MUIA_Lamp_ColorType, MUIV_EveryTime, apMain, 2, MUIM_Application_ReturnID, GUI_LAMP_COLORTYPE);
DoMethod(caColor, MUIM_Notify, MUIA_Coloradjust_RGB, MUIV_EveryTime, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_TriggerValue);
DoMethod(btColorOff, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_Off);
DoMethod(btColorOk, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_Ok);
DoMethod(btColorWarning, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_Warning);
DoMethod(btColorError, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_Error);
DoMethod(btColorFatalError, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_FatalError);
DoMethod(btColorProcessing, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_Processing);
DoMethod(btColorLookingUp, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_LookingUp);
DoMethod(btColorConnecting, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_Connecting);
DoMethod(btColorSendingData, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_SendingData);
DoMethod(btColorReceivingData, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_ReceivingData);
DoMethod(btColorLoadingData, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_LoadingData);
DoMethod(btColorSavingData, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Color, MUIV_Lamp_Color_SavingData);
DoMethod(btTiny, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Type, MUIV_Lamp_Type_Tiny);
DoMethod(btSmall, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Type, MUIV_Lamp_Type_Small);
DoMethod(btMedium, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Type, MUIV_Lamp_Type_Medium);
DoMethod(btBig, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Type, MUIV_Lamp_Type_Big);
DoMethod(btHuge, MUIM_Notify, MUIA_Pressed, FALSE, lpLamp, 3, MUIM_Set, MUIA_Lamp_Type, MUIV_Lamp_Type_Huge);
DoMethod(wiMain, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, apMain, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
ret = RETURN_ERROR;
{
ULONG open;
set(wiMain, MUIA_Window_Open, TRUE);
get(wiMain, MUIA_Window_Open, &open);
if (!open)
goto bye;
}
{
ULONG sigs = 0UL;
BOOL running = TRUE;
while (running)
{
switch (DoMethod(apMain, MUIM_Application_NewInput, &sigs))
{
case MUIV_Application_ReturnID_Quit:
running = FALSE;
break;
case GUI_LAMP_COLORTYPE:
{
ULONG type;
get(lpLamp, MUIA_Lamp_ColorType, &type);
switch (type)
{
case MUIV_Lamp_ColorType_UserDefined:
set(txColorType, MUIA_Text_Contents, "user preferences");
break;
case MUIV_Lamp_ColorType_Color:
set(txColorType, MUIA_Text_Contents, "direct color value");
break;
case MUIV_Lamp_ColorType_PenSpec:
set(txColorType, MUIA_Text_Contents, "direct PenSpec definition");
break;
}
}
break;
}
if (running && sigs)
{
sigs = Wait(sigs | SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_E | SIGBREAKF_CTRL_F);
if (sigs & SIGBREAKF_CTRL_C)
running = FALSE;
if (sigs & SIGBREAKF_CTRL_F)
set(apMain, MUIA_Application_Iconified, FALSE);
else if (sigs & SIGBREAKF_CTRL_E)
set(apMain, MUIA_Application_Iconified, TRUE);
}
}
}
ret = RETURN_OK;
bye:
if (apMain) MUI_DisposeObject(apMain);
if (clTrafficLight) MUI_DeleteCustomClass(clTrafficLight);
if (clBlinkingLamp) MUI_DeleteCustomClass(clBlinkingLamp);
if (clDropableLamp) MUI_DeleteCustomClass(clDropableLamp);
if (MUIMasterBase) CloseLibrary(MUIMasterBase);
exit(ret);
}